package dp;

import java.util.*;
import md.SuscripcionMD;

/**
 * La clase SuscripcionDP maneja el dominio del problema de los datos de la clase
 * SuscripcionMD.
 *
 * @author Pamela
 * @version 1.0
 */
public class SuscripcionDP {

    private int idSuscripcion = -1;
    private String tipoSuscripcion = "";
    private int tiempoSuscripcion = -1;
    private double precioSuscripcion = -1;
    private SuscripcionMD suscripcionMD;

    public SuscripcionDP() {

        this.idSuscripcion = -1;
        this.tipoSuscripcion = "";
        this.tiempoSuscripcion = -1;
        this.precioSuscripcion = -1;
        this.suscripcionMD = new SuscripcionMD();
    }

    /**
     * Metodo para ingresar un nuevo suscripción en el sistema.
     *
     * @return Devuelve TRUE si es que se ingresa correctamente el registro en
     * la BDD.
     */
    public boolean ingresarSuscripcionDP() {
        boolean resultado = false;
        setDatosMd();
        resultado = this.suscripcionMD.ingresarSuscripcionMD();
        return resultado;
    }

    /**
     * Metodo para modificar los datos de una suscripción
     * @return Devuelve TRUE si es que se modifica correctamente el registro en
     * la BDD.
     */
    public boolean modificarSuscripcionDP() {
        boolean resultado = false;
        setDatosMd();
        resultado = this.suscripcionMD.modificarSuscripcionMD();
        return resultado;
    }

    /**
     * Metodo para eliminar una suscripción del sistema
     * @return Devuelve TRUE si es que se elimina correctamente el registro en
     * la BDD.
     */
    public boolean eliminarSuscripcionDP() {
        boolean retorno = false;

        this.suscripcionMD.setIdSuscripcion(this.idSuscripcion);
        retorno = this.suscripcionMD.eliminarSuscripcionMD();

        return retorno;
    }

    /**
     * Metodo que permite obtener las suscripciones de la BDD.
     *
     * @return Devuelve una lista con los sistemas disponibles de la BDD
     */
    public Map getSuscripciones() {
        return this.suscripcionMD.getSuscripciones();
    }

    public List getListSuscripciones() {

        return this.suscripcionMD.consultarSuscripcionMD();
    }

    public boolean verificarSuscripcionDP() {
        boolean retorno = false;
        this.suscripcionMD.setIdSuscripcion(this.idSuscripcion);
        retorno = suscripcionMD.verificarSuscripcionMD();
        return retorno;
    }

   public String[] regresarDatos() {

        this.suscripcionMD.setIdSuscripcion(this.idSuscripcion);
        return this.suscripcionMD.regresarDatos();

    }

    public void setDatosMd() {
        this.suscripcionMD.setIdSuscripcion(this.idSuscripcion);
        this.suscripcionMD.setTipoSuscripcion(this.tipoSuscripcion);
        this.suscripcionMD.setTiempoSuscripcion(this.tiempoSuscripcion);
        this.suscripcionMD.setPrecioSuscripcion(this.precioSuscripcion);
    }

    /***************************************
     * Getters & Setters
     ***************************************/
    public int getIdSuscripcion() {
        return idSuscripcion;
    }

    public double getPrecioSuscripcion() {
        return precioSuscripcion;
    }

    public SuscripcionMD getSuscripcionMD() {
        return suscripcionMD;
    }

    public int getTiempoSuscripcion() {
        return tiempoSuscripcion;
    }

    public String getTipoSuscripcion() {
        return tipoSuscripcion;
    }

    public void setIdSuscripcion(int idSuscripcion) {
        this.idSuscripcion = idSuscripcion;
    }

    public void setPrecioSuscripcion(double precioSuscripcion) {
        this.precioSuscripcion = precioSuscripcion;
    }

    public void setSuscripcionMD(SuscripcionMD suscripcionMD) {
        this.suscripcionMD = suscripcionMD;
    }

    public void setTiempoSuscripcion(int tiempoSuscripcion) {
        this.tiempoSuscripcion = tiempoSuscripcion;
    }

    public void setTipoSuscripcion(String tipoSuscripcion) {
        this.tipoSuscripcion = tipoSuscripcion;
    }
}
